home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / TCP_IP / TNOS230D / NEW2TN2.02 < prev    next >
Text File  |  1995-11-23  |  43KB  |  1,060 lines

  1.                     Upgrading TNOS to release 2.02
  2.          http://www.lantz.com/Update2.02.html
  3.  
  4.  
  5. TNOS 2.02 will be the next release of TNOS, to be released sometime
  6. before the formation of the United Federation of Planets. Hopefully,
  7. this list of changes will give you an idea of the scope of work that
  8. has occurred between versions. Of course, it may be faster just to
  9. re-read the docs when the next version is released.
  10.  
  11. This document is divided into:
  12.  
  13.  
  14.     * Bug Fixes
  15.     * Improvements
  16.     * Minor Changes
  17.     * Known Bugs
  18.     * To-Do List
  19.  
  20.  
  21. !!! NOTE !!!
  22.  
  23. As mentioned later in this document, the TNOS file structure has been cleaned
  24. up, and many of the files and directories have been moved.
  25.  
  26.     Moved from root to spool: netrom.sav and domain.txt
  27.  
  28.     Moved from root to etc (new directory): popusers ftpusers alias
  29.     groups net.rc GPSFILE
  30.  
  31.     Moved from spool to etc: menus help areas areas.sys motd motd.sys
  32.     ftpmotd newuser quotes rewrite askhome.dat catalog.cat expire.dat
  33.     userhold.dat wordhold.dat mbfilter.dat forward.bbs translat
  34.  
  35.     Moved from spool to spool/log (new directory): mail.log ftp.log
  36.     mbox.log reqsvr.log
  37.  
  38. ------------------------------------------------------------
  39. Bug Fixes:
  40.  
  41. The following bugs have been squashed.
  42.  
  43.  
  44. *    GCC without TUTOR buglet in mailbox2.c, BBS help function, fixed
  45.  
  46. *    Corrected a few bell characters in the catalog.dat file (\007 -> ^G)
  47.  
  48. *    A few Sun-specific tweeks from Bob Smith <bob@snuffy.penfield.ny.us>
  49.  
  50. *    Fixed double TNOS process buglet
  51.  
  52.   At times there would be two TNOS's in place, instead of one. This was caused
  53.   by the an exit routine that would at times do a restart of TNOS, creating a
  54.   new process, different from the one that 'init' was monitoring, causing
  55.   'init' to start a second process. This is now fixed.
  56.  
  57. *    Fixed problem in finger server in calling QRZ/SAMCALLB
  58.  
  59.   Now, the callbook routine lookup (if compiled in) is only called if the
  60.   callbook is active.
  61.  
  62. *    Fixed conditionals in fingerd.c around the 'done' label 
  63.  
  64. *    Fixed AXUI buglet where UI frames destined for use, weren't received
  65.  
  66.   From Jnos 110L: Joe K5JB sent along a fix for handling datagram-mode IP
  67.   packets while an axui session was active. ax_recv() in ax25.c was changed
  68.   to test if we were being addressed before assuming an unproto packet should
  69.   go to the axui session.
  70.  
  71. *    Fixed buglet in bootp which truncated the IP address
  72.  
  73.   From Jnos 110L: Andrzej Szczerba sent along a fix for a truncation problem
  74.   in bootp_rx() of bootp.c, when setting the local IP address.
  75.  
  76. *    Write errors during the Command session COPY command now handled
  77.  
  78.   From Jnos 110L: Applied Andrew G8FSL's fix to docopy() in main.c to
  79.   detect errors during a file copy.
  80.  
  81. *    Better handling of too many messages per FBB-style forwardng
  82.  
  83.   Since some BBSs insist on NOT paying attention to the FBB protocol which
  84.   LIMITS the number of messages per proposal to 5 MAXIMUM, this error
  85.   situation is now better handled.
  86.  
  87. *    Fixed minor bug in forward.c- makecl()
  88.  
  89. *    Added some conditionals for WPAGES in mailbox.c
  90.  
  91. *    Fixed FBB forwarding checksum errors if fwd > 5 msgs in an area
  92.  
  93. *    Fixed gateway timeout bug
  94.  
  95. *    TCPGATE buglets fixed
  96.  
  97.   These included not allowing multiple simultaneous connects, lingering
  98.   zombie sockets if multiple connects attempted, and not properly sensing
  99.   when a TCPGATEd system disconnected.
  100.  
  101. *    Added a fix that COULD eliminate the crashes when resetting null sockets
  102.  
  103. *    Fixed typos on the word 'translate'
  104.  
  105.   This occured in domain.c.
  106.  
  107. *    NULL sockets bug in Netrom (Unix release, only) found
  108.  
  109. *    Increased (once again) the size of usvprintf() buffers
  110.  
  111.   Discovered the CONVERS would occasionally want more than 1024, so if
  112.   either of the POP servers or CONVERS are defined, then we allow 2048 byte
  113.   buffers, otherwise 1024 byte buffers.
  114.  
  115. *    Fixed a TUTOR buglet that didn't always sense an unexpected disconnection
  116.  
  117. *    Another NULL socket fix, this one in the gateway code. Fixed?
  118.  
  119. *    Fixed a bug where the BBS 'MW' command created a ".ctl" file
  120.  
  121. *    Fixed a UNIX-specific buglet with the 'dir/ls' commands
  122.  
  123.   Would only display files matching "*.*" instead of "*".
  124.  
  125. *    Changed three catalog string names in nntpserv.c which caused errors
  126.  
  127.   Also cleaned up compiler warnings in here.
  128.  
  129. *    Fixed a buglet with FBB forwarding if the remote defers a msg
  130.  
  131.   Now will let one negotiation go past it, before attempting again, allowing
  132.   the session to complete when the remote has no more traffic.
  133.  
  134. *    Fix for FBB compression using LF instead of CR
  135.  
  136. *    MAJOR rewrite of the forward.c sendmsg() function
  137.  
  138.   The order of lines sent during PBBS forwarding could be RADICALLY wrong,
  139.   if the 'smtp headers' were on, or if a RETURNRECEIPT was requested. During
  140.   other times, it simply lacked a NL after the R: lines. All better, now!
  141.  
  142. *    Unix flow-controlled session w/statline proper num lines for 'more'
  143.  
  144.   Previously, the flow control 'more' (not to be confuzed with the BBS
  145.   'morelines') did not account for the 1 or 2 lines used if statline was on
  146.   for that session.
  147.  
  148. *    Added code to ignore improperly routed ARP requests *from* us
  149.  
  150.   One user had experienced troubles when he misconfigured a TheNet node where
  151.   all ARP requests FROM TNOS would be routed back TO TNOS. If this happens now,
  152.   the packet is quietly discarded, rather than exploding in a puff of smoke,
  153.   like it did.
  154.  
  155. *    CNAMEs no longer need to be fully qualified
  156.  
  157.   Not a bug, a feature ;-) Since day one, CNAME were required to be
  158.   fully-qualified in xNOS, though the RFCs do not require this. No longer
  159.   limited in this manner.
  160.  
  161. *    Fixed an NNTP server buglet that crashed if history file got corrupted
  162.  
  163. *    Added fix to prevent crashes if SMTP tries to process a empty file
  164.  
  165. *    Added fix to prevent crashes if SMTP file doesn't end w/a CR
  166.  
  167.   It seems that this code was letting SOME files improperly end a SMTP file,
  168.   making the client wait, while the server is waiting for the client to end
  169.   the transfer properly. 
  170.  
  171. *    Fixed a long-standing xNOS domain.txt bug, involving $origin
  172.  
  173.   An '$origin' did not get properly rewritten back, if using
  174.   'domain update on'. Also affected the newly added '$include'.
  175.  
  176. *    Added a possible early termination of message buglet in SMTP
  177.  
  178.   While the possibility was rare, it is now plugged. Thank to Andrew Benham
  179.   for pointing this one out....
  180.  
  181. *    Added code to adjust the statusline to > 80 char screens
  182.  
  183. *    Added patch to the QRZ server for long entries
  184.  
  185.   The QRZ server prior to 2.02 would sometimes not read enough data to
  186.   properly display some calls.
  187.  
  188. *    Fixed a misplaced '#endif' that required STATS_TFC in stats.c
  189.  
  190.  
  191. ------------------------------------------------------------
  192. Improvements:
  193.  
  194. The following optimizations and improvements have occurred.
  195.  
  196.  
  197. *    Added a command line parameter for # of netrom open circuits
  198.  
  199.   This number defaults to 20, but some sites need more than this. Use a
  200.   "-r xxx' command line parameter to set the number of open Netrom circuits
  201.   to 'xxx'.
  202.  
  203. *    Accomodate "LIST " as "LIST" in pop3server.
  204.  
  205. *    Disconnect smtp client after inactivity, per T4 timer.
  206.  
  207.   From Jnos 110L: Demetrios SV1UY pointed out a problem with the SMTP client
  208.   not disconnecting after inactivity, contrary to how the smtp T4 timer is
  209.   documented.  James fixed it by changing getresp() in smtpcli.c to set an
  210.   alarm timer before reading.
  211.  
  212. *    Added missing FREE's in mailcli
  213.  
  214.   From Jnos 110L: mailcli.c had several calls to domainsuffix() but few
  215.   calls to free the string that this routine allocated.
  216.  
  217. *    Log and display time delta when changing system time
  218.  
  219.   From Jnos 110L: Added a display of the amount of time change due to
  220.   running rdate to the log message and screen display.
  221.  
  222. *    Routing to loopback now serves as a bit-bucket
  223.  
  224.   From Jnos 110L: Barry K2MF sent a mod to rt_lookup() in iproute.c that
  225.   detects an attempt to route a packet to the loopback interface, and returns
  226.   instead a nil route.  This is to allow using loopback as a bitbucket
  227.   interface, ie, 'route add problem-addr loopback' acts to drop any packets
  228.   sent to problem-addr, returning a host-unreachable error.
  229.  
  230. *    TNOS on an HP95, anyone!?!?
  231.  
  232.   From Jnos 110L: Ron WA7TAS sent a fix for a uart problem in the HP95
  233.   palmtop!  To compile for the HP95, add #define HP95 to
  234.   config.h and trim down config.h to just the essentials!
  235.  
  236. *    More flexible, TNC-like, connect statements accepted
  237.  
  238.   Also from Jnos 110L, with changes: Joe K5JB sent along a single routine to
  239.   parse digipeater strings, that consolidates four separate but identical
  240.   pieces of code.  This saves code space and now allows optional commas
  241.   and the via keyword, for compatibility with (some) other software.
  242.   Digis are now allowed in the axui command after the target unproto call.
  243.   The 'ax25 rosecall'-style syntax is ALSO still accepted. Samples:
  244.  
  245.     c ax1 info @ 813046    /* rose-style connect */
  246.     c ax2 ko4ks via digi1,digi2
  247.     c ax1 gatway v digi1
  248.  
  249. *    Can now trace the non-master port on multi-port kiss interfaces
  250.  
  251.   From Jnos 110L: Joe K5JB sent a fix to allow tracing a particular
  252.   kiss-attached port on a multi-drop kiss interface.
  253.  
  254. *    Dialer changes from Jnos 110L
  255.  
  256.   Fixed dialer.c to not wait forever while processing wait's speed keyword.
  257.   Also eliminated the logging of each dialer command, unless DIALDEBUG is
  258.   defined at compile time.  However, if failmode is off, a failed command and
  259.   its line number are logged.
  260.  
  261. *    Added a BBS script hook for users changing areas
  262.  
  263.   The script hook file 'area.sys' is attempted to be executed for each area
  264.   change by a user, with a parameter of 'area xxxx', where 'xxxx' is the
  265.   area name. This allows you to send special messages to users about certain
  266.   areas, or to use it for logging user area changes, etc.
  267.  
  268. *    Added code for easy access of associative arrays
  269.  
  270.   Associative arrays are what are used for aliases. They are mini-databases,
  271.   which are accessed by the label they are associated with.
  272.  
  273. *    Changed 'mbox cmd' code to use associative array code
  274.  
  275. *    Added a Command Session 'alias' command, using associative arrays
  276.  
  277.   This allows you to define ANY command aliases you wish, available from the
  278.   Command session, and as remote SYSOP.
  279.  
  280. *    Added Command Session 'set' and 'unset' commands, with associative arrays
  281.  
  282.   This allows command line substitution of $varname anywhere in a command
  283.   line to be replaced with the value of the variable named 'varname'. The
  284.   convention of ${varname} is also allowed, for those times when what you
  285.   are substituting is NOT followed by white space. Also, a literal '$' is
  286.   obtained with a '$$'.
  287.  
  288. *    Added a 'conv unlink' command
  289.  
  290.   You can unlink by hostname, ip address, or convers hostname. This only
  291.   applies to those hosts that you have 'conv link'ed to.
  292.  
  293. *    Added a 'conv drop' command
  294.  
  295.   This command can disconnect a convers user or linked convers host by name.
  296.  
  297. *    Added a Command session 'incr <variable> [offset]' command
  298.  
  299.   Interprets the value of variable 'variable', and adds the value of 'offset'
  300.   to it (defaults to offset of 1). If 'variable' is undefined, then it is
  301.   first created with a value of zero, then the offset is added to it.
  302.  
  303. *    Added a Command session 'decr <variable> [offset]' command
  304.  
  305.   Interprets the value of variable 'variable', and subtracts the value of
  306.   'offset' to it (defaults to offset of 1). If 'variable' is undefined, then
  307.   it is first created with a value of zero, then the offset is subtracted from
  308.   it.
  309.  
  310. *    Added a Command session 'goto [<labelname>]' command
  311.  
  312.   This allows you to skip past sections of input (keyboard or script file)
  313.   until a proper label of 'labelname' is seen. If the 'labelname' parameter
  314.   is not given, then the current goto label (if active) is displayed.
  315.  
  316. *    Added a Command session 'label [<labelname>] command
  317.  
  318.   This is used to define labels in sections of input (keyboard or script file)
  319.   for use with the 'goto' command. If the 'labelname' parameter is not given,
  320.   then the current 'goto' is cleared.
  321.  
  322. *    Added the ability for multiple commands on a command line, using ';'
  323.  
  324.   This is possible in the Command session, as remote sysop, or during the
  325.   BBS. To use a literal ';', you must have the parameter in question surrounded
  326.   in either double quotes or braces.
  327.  
  328. *    Placed several commands, some new, some old, under a new conditional flag
  329.  
  330.   A new config.h flag, 'SCRIPTING' selectively adds the following commands,
  331.   related to scripting from the command session:
  332.   alias, decr, echo, gone, goto, here, incr, label, pause, set, sleep, and
  333.   unset. Others WILL be added to this conditional flag soon.
  334.  
  335. *    Added a Command Session 'if' command, with many subcommands
  336.  
  337.   This allows conditional execution of commands. The many different forms are:
  338.     if defined <variable> "cmd"
  339.     if notdefine <variable> "cmd"
  340.     if zero <string> "cmd"
  341.     if notzero <string> "cmd"
  342.     if equal <string1> <string2> "cmd"
  343.     if notequal <string1> <string2> "cmd"
  344.     if strequal <string1> <string2> "cmd"
  345.     if notstrequal <string1> <string2> "cmd"
  346.  
  347.   For each of these, 'cmd' can be any single or compound command, but it
  348.   must be surrounded in double quotes or braces, if it contains any blanks or
  349.   ';'s. The 'variable' parameters are the name of any variable defined with
  350.   the 'set' command. Any of the 'string' parameters can be a simple string,
  351.   or one using command variable substitution (i.e. $varname).
  352.  
  353.   The '[not]defined' commands test for a variables existence. The '[not]zero'
  354.   commands test for the string evaluating to a value of zero. The '[not]equal'
  355.   commands test two strings numerically for equality. The '[not]strequal'
  356.   test two strings alphanumerically for equality.
  357.  
  358. *    Added ability to uses braces like double quotes in command lines
  359.  
  360.   The only difference is that data within braces does NOT have variable
  361.   expansion take place.
  362.  
  363. *    Added a 'foreach <variable> "list" "cmd" Commands Session cmd
  364.  
  365.   This allows you to iterate a list of names/values, applying a command
  366.   string to each value. For example:
  367.  
  368.     foreach ifc "ax1 ax2 test" "ifc $ifc ax25 t4 1800"
  369.  
  370.   This sets the variable 'ifc' to the three different interfaces named
  371.   in the list "ax1 ax2 test", and sets their t4 timers.
  372.  
  373. *    For consistency, added an 'unalias' command
  374.  
  375. *    Added an 'else "cmd"' command
  376.  
  377. *    Added a 'while' command, with same variations as the 'if' cmd
  378.  
  379. *    Added an 'until' command, with same variations as the 'if' cmd
  380.  
  381. *    Removed 'zero' and 'notzero' conditions for if/while/until
  382.  
  383.   Not needed since you can to a 'equal/notequal' comparison to zero.
  384.  
  385. *    Removed 'defined' and 'notdefined' conditions for if/while/until
  386.  
  387.   This become the new 'ifdef' and 'ifndef' commands.
  388.  
  389. *    Changed remaining if/while/until conditions from names to symbols
  390.  
  391.   And swapped the order of the parameters to make it more like other
  392.   scripting languages. The many different forms are now:
  393.  
  394.     if|while|until string == string2 {cmd}
  395.     if|while|until string >= string2 {cmd}
  396.     if|while|until string > string2 {cmd}
  397.     if|while|until string <= string2 {cmd}
  398.     if|while|until string < string2 {cmd}
  399.     if|while|until string != string2 {cmd}
  400.     if|while|until string eq string2 {cmd}
  401.     if|while|until string !eq string2 {cmd}
  402.  
  403.   The '==' and '!=' commands test two strings numerically for equality.
  404.   The 'eq' and '!eq' commands test two strings alphanumerically for equality.
  405.  
  406. *    Added command line parameter of '-D var[=value]'
  407.  
  408.   This allows you to define TNOS environment variables from the command
  409.   line.
  410.  
  411. *    Added command line parameter of '-E' for importing environment variables
  412.  
  413.   This pre-defines all environment variables from the calling program,
  414.   either COMMAND.COM under DOS, or the appropriate shell under Unix.
  415.  
  416. *    Added variable expansion to parsing of autoexec.nos and source command
  417.  
  418. *    Added an optional portnumber for 'start convers' command
  419.  
  420. *    Added an optional portnumber for 'conv link' command
  421.  
  422.   The syntax of this *USED* to be 'conv link hostname [confname]' and is not
  423.   'conv link hostname [port [confname]]'. Both the 'port' and 'confname'
  424.   parameters are optional, but if you wish to specify the conference hostname,
  425.   then you MUST specify the port number (which is 3600, usually).
  426.  
  427. *    Added a 'sounds' command for UNIX version
  428.  
  429.   This allows you to define UNIX commands to execute in which to play some
  430.   kind of a sound file when requested. The pre-defined sound for 'chat' will
  431.   be played (if defined) when an incoming chat session occurs. At the present,
  432.   this is the only 'special', pre-defined sound.
  433.  
  434.   Rather than requiring you to have
  435.   a specific sound-generating program, this allows you to use what you have or
  436.   wish to use. The sound command is executed in the background, so it does
  437.   not have to be short in duration. The different 'sounds' commands are:
  438.  
  439.     sounds delete soundname
  440.     sounds define soundname [["soundcommand"] ["sounddescription"]]
  441.     sounds list
  442.     sounds play soundname
  443.  
  444.   The delete subcommand removes a defined sound by name. The list
  445.   subcommand lists all defined sounds. The play subcommand plays the defined
  446.   sound. The define subcommand will list the predefined sound if the
  447.   "soundcommand" and "sounddescription" are missing.
  448.  
  449. *    Added in several mail-related patched from Andrew Benham
  450.  
  451.   While I was there, I made a few modifications and cleanups. As for Andrew's
  452.   mods, here's what he says:
  453.  
  454.     I've been having problems with SMTP and POP3 in TNOS 2.01, and
  455.     have come up with the following patches.
  456.  
  457.     Problem 1. In common with most flavours of NOS, the handling
  458.                of lines beginning with a dot ('.') is not performed
  459.                as per section 4.5.2 of RFC821. Worse still, the
  460.                POP3 client and server don't use a consistent method.
  461.  
  462.     Problem 2. Mail arriving from a POP server is placed in the
  463.                outbound SMTP queue. The addressee is taken from
  464.                the "To:" header in the message. There is no
  465.                guarantee that the "To:" header specifies the
  466.                real recipient - for example consider the TNOS
  467.                digest, which has a header which reads:
  468.                    To: tnos-topics-digest@lantz.com
  469.                Much of the mail I pop from my local POP3 server
  470.                (gb7ing.ampr.org) has the header
  471.                    To: g8fsl@gb7ing.ampr.org
  472.                so this gets sent back by SMTP to gb7ing.ampr.org,
  473.                who puts it back in my mailbox to be popped off,
  474.                .....
  475.  
  476.     Fix 1.     Lines beginning with a dot ('.') are handled as
  477.                per RFC821 and RFC1725.
  478.  
  479.     Fix 2.     The "mailbox" field from the "popmail attach" command
  480.                is used as the address to queue the SMTP mail resulting
  481.                from the POP poll. If the mailbox has no "@" symbol in
  482.                it, "@<hostname>" is added.
  483.                This allows mail popped by TNOS to be sent to the Linux
  484.                kernel, by specifying the mailbox as
  485.                  "user@<linux hostname>".
  486.  
  487.     Fix 3.     A cosmetic fix to the message reporting the arrival
  488.                of POP mail, distinguishing it from SMTP arrivals so
  489.                as to avoid confusion.
  490.  
  491.   The RFC '.' buglet has been around forever! 
  492.  
  493. *    Added in UNIX permissions checking to FTP server
  494.  
  495.   This was a potential problem with restricted files not being restricted.
  496.  
  497. *    Added (in UNIX version) security 'ftpgid' and 'ftpuid' subcommands
  498.  
  499.   These define the group and user defined for all users using the FTP server,
  500.   that do NOT have sysop permissions. Prior to opening/creating a file, the
  501.   real user/group ids are changed, and an attempt is made to 'open' the
  502.   selected file. If the secured user is not allowed, he gets a permission
  503.   error message.
  504.  
  505. *    Reorganized the file structure!!
  506.  
  507.   NOTE: THIS WILL cause you a problem upgrading if you ignore it!
  508.  
  509.   Breaking the historic precedence of placing all files in 'spool' (whether
  510.   they are of a spooling nature or not), many files were moved to a new
  511.   'etc' directory. The files you need to move are: areas, areas.sys,
  512.   ftpmotd, motd, motd.sys, newuser, quotes, rewrite, askhome.dat, catalog.cat,
  513.   expire.dat, userhold.dat, wordhold.dat, mbfilter.dat, translat,
  514.   and forward.bbs.
  515.  
  516.  
  517.   The following files move from the root TNOS directory to the 'etc' directory:
  518.   popusers, ftpusers, alias, groups, net.rc, and GPSfile.
  519.  
  520.  
  521.   The following files move from the root TNOS directory to the 'spool'
  522.   directory: netrom.sav, and domain.txt.
  523.  
  524.  
  525.   The following directories need to be moved from 'spool' to 'etc':
  526.   menus, and help.
  527.  
  528.  
  529.   The following files were moved from 'spool' to 'spool/log': mail.log,
  530.   ftp.log, mbox.log, and reqsvr.log.
  531.  
  532. *    Added an Xwindows server!
  533.  
  534.   Just 'start x' and 'xwindows hosts <ipaddress>', and connect using the supplied
  535.   dpwish (tcl-dp) scripts. The dpwish scripts read site-specific configuration
  536.   from a etc/xdefaults file. The 'xwindows' Command Session command has 'hosts'
  537.   and 'connected' as subcommands. *NO* site that is missing from the 'x hosts'
  538.   list will be able to connect to the XSERVER.
  539.  
  540.   The XSERVER defaults to port 7388, but can be changed by giving a port
  541.   number on the 'start x' line.
  542.  
  543.   While this was written to allow X applications to receive status info, and
  544.   enter in commands, this CAN be used by normal telnet applications to
  545.   remotely maintain the system.
  546.  
  547.   The XSERVER can be run on a TNOS/DOS system, as well, though the X would
  548.   have to come from another system.
  549.  
  550.   The required dpwish application will be available when this feature is
  551.   available.
  552.  
  553. *    Enhanced the 'mb mailfor' command, adding new features
  554.  
  555.   NOTE: the "mbox mailfor 'timeinseconds'" command is changed to
  556.   "mbox mailfor timer 'timeinseconds'"!
  557.  
  558.   Added a 'mb mailfor alert' command to allow monitoring of selected areas for
  559.   incoming mail and notifying when this occurs. There are five sub-commands,
  560.   "mbox ['area' ...]" to define the area(s) to be monitored, "clear" to
  561.   clear the indication of new mail, "status" to remotely read the new mail
  562.   status, "mode 'on|off'" and "sound 'soundname'" (if SOUNDS are compiled
  563.   in - UNIX only).
  564.  
  565.   Added a 'mb mailfor hold' command to notify when incoming mail is queued as
  566.   'HELD'. and notifying when this occurs. There are four sub-commands,
  567.   "mode 'on|off'", "clear" to clear the indication of held mail, "status"
  568.   to remotely read the new mail status, and "sound 'soundname'" (if SOUNDS are
  569.   compiled in - UNIX only).
  570.  
  571.   If messages are being held, the status line will have a '!' to the left
  572.   of the date, and there will be a '@' if alert monitored mail is waiting.
  573.   If using TNOS/X, you get a dialog box to indicate these events.
  574.  
  575.   Each of the status line indicators is cleared with the 'clear' subcommands,
  576.   and from TNOS/X by pressing the "OK" button to dismiss the dialog box.
  577.  
  578. *    Added a 'sreset' command to reset (kill) a lingering socket
  579.  
  580.   Since NULL sockets STILL are around (and probably always WILL be, at this
  581.   rate), this command will reset (close) a socket, whether null or not.
  582.   I was really surprised that I hadn't already added a command to do this ;-)
  583.   It took me longer to double check to see if I *HAD* than it took to code
  584.   the command ;-)
  585.  
  586. *    Added a way to 'screen' ttylink attempts
  587.  
  588.   NOTE: The "attended 'on|off'" command is now changed to
  589.   "chat attended 'on|off'" and the "chat 'bbsuser'" command is now the
  590.   "chat with 'bbsuser'" command
  591.  
  592.   There is now a new mode to incoming chat (ttylink) requests. The
  593.   'chat attended' command turn on/off incoming requests, as before. Then
  594.   there is the 'chat screening on|off' command that turns on a screening
  595.   mode to incoming requests. The user gets a message saying that it is
  596.   Paging the sysop, and a message is sent to the Console (and an X dialog box
  597.   comes up, with TNOS/X). If you have a 'chat screensound' defined, then
  598.   that sound is played (Unix, only).
  599.  
  600.   You can then to a 'chat accept' or a 'chat deny'. If you deny it, then
  601.   the user will either get a default 'sorry' message, or (if defined) they
  602.   will get the message from the 'chat denystr' command. If you accept it,
  603.   then the ttylink session is started, and the 'chat connectsound' is played,
  604.   if defined (Unix only).
  605.  
  606.   The user remains waiting for the sysop to answer for 'chat retries' seconds,
  607.   which defaults to 60 seconds.
  608.  
  609. *    Added a CRON daemon and command
  610.  
  611.   While this could have ALWAYS been useful, I was further encouraged to add
  612.   this by the discovery that you can only do an 'at' command for 24 days or
  613.   less in advance.
  614.  
  615.   To start the cron process, you do a 'start cron'. This will read the
  616.   'spool/crontab' file for cron entries. Each entry is of the form:
  617.  
  618.     min hour day month dayofweek command
  619.  
  620.   The fields 'min', 'hour', 'day', 'month', and 'dayofweek' can be in several
  621.   forms. A range of numbers (from 1 to 6) can be specified as '1-6'. A list of
  622.   numbers (1, 5 and 9) can be specified as '1,5,9'. Lists and ranges can be
  623.   combined, so '1-5,9' is the same as '1,2,3,4,5,9'. Ranges can be followed
  624.   with a '/xxx' to specify an increment to use other than 1. For example,
  625.   a field of '0-12/2' would be the same as '0,2,4,6,8,10,12'.
  626.  
  627.   Minutes can be 0-59, hours can be 0-23, days can be 1-31, months can be
  628.   1-12, and dayofweek can be 0-6 (0=Sun).
  629.  
  630.   Additional, the 'months' and 'dayofweek' fields can be specified using
  631.   the first three characters of their names ('Sun', 'Sep', 'Dec', 'Thu',
  632.   etc.). These can be combined with ranges and lists, as 'Dec,2-4,July' or
  633.   '2-12/2,Jan'.
  634.  
  635.   As with most all of the TNOS config files, comments can be included in the
  636.   crontab file, by starting a line with a '#', or by using a blank line.
  637.  
  638.   Example: '0 5 * * * expire now' will run the 'expire now' command at
  639.   5:00 a.m. everyday.
  640.  
  641.   The 'cron' Command Session command has several subcommands: 'add', 'delete',
  642.   'clear', 'list' and 'load'. You can use the 'load' command to re-load a
  643.   crontab on demand when you have made changes or to load an additional
  644.   file, if given an optional filename. If none is given, it loads the
  645.   'spool/crontab' file. You use the 'add' command to
  646.   add individual entries manually. The 'list' command show you what cron
  647.   is analyzing. The 'delete' command allows you to remove an entry manually.
  648.   The 'clear' removes ALL entries.
  649.  
  650.   Once started, it will do a 'clear', a 'load', and then parse the queued
  651.   entries, executing any that meet the criteria. Then the CRON server will
  652.   goto sleep for 1 minute, and try again. The time is NOT syncronized to
  653.   the first second of each minute, so it could fall anywhere within the
  654.   minute, depending on when it was started.
  655.  
  656. *    Added some timezone changes from Andrew Benham
  657.  
  658.   Andrew came up with some good ideas, that I of course made changes to ;-)
  659.   but the results are basically the same. There are now two additional
  660.   config.h flags. The first, LOG_GMT_TZ, will make all log file entries in
  661.   GMT time, rather than local time. The UK users need this to be legal with
  662.   their regulations. The second flag, USE_TZOFFSET, will use an offset from
  663.   GMT (rather than a TZ name) in smtp headers.
  664.  
  665.   Also, the 'time' command (both in the BBS and at the Command Session)
  666.   now takes an optional 'utc' argument (actually ANY parameter will do ;-)
  667.   which gives the time also in GMT, and tells you what the local offset
  668.   from UTC is.
  669.  
  670. *    Added code that MIGHT recover from Unix port write failures
  671.  
  672. *    Added in the latest JNOS RIP-2 code
  673.  
  674. *    Added a 'ifconfig ifc metric' command for separate RIP metrics
  675.  
  676.   From Ken Koster.
  677.  
  678. *    Added in the POLLEDKISS code from JNOS for BPQ POLLED KISS
  679.  
  680. *    Added a 'smtp rewritetrace on|off' command
  681.  
  682.   Andrew Benham mentioned he was trying to get something like this to work,
  683.   but was having problems with it. Since it was a good idea, it's now in.
  684.   This allows you to see on the Command Session the various steps that
  685.   the rewrite takes when it does it's job. See, Andrew! I'm getting so good,
  686.   I can now incorporate patches BEFORE they are debugged and submitted! ;-)
  687.  
  688. *    Added a 'editheader' command to allow SYSOPs to edit message headers
  689.  
  690.   This editing is done 'in-place', that is, is does NOT require the message
  691.   area to be rewritten. This is done by making the mailer add padding spaces
  692.   to the From, To, MsgID, and Subject lines for all mail kept in local areas.
  693.   This space is stripped from all of the commands that use these lines, so the
  694.   net effect is just a little more disk space usage. You can also edit the
  695.   Message Type.
  696.  
  697.   This padding, of course, is for TNOS 2.02 and greater. You can STILL edit
  698.   message headers on pre-2.02 messages (during the transition), but you can
  699.   only replace data of the same length (or less) as was in the original
  700.   field.
  701.  
  702.   The 'editheaders' command JUST edits the headers, it does NOT queue for
  703.   forwarding, or do any other analysis.
  704.  
  705. *    Added more flexibility to the mbfilter code
  706.  
  707.   The mbfilter code when comparing subjects used to required the string
  708.   being searched for to begin in column 1. Now the string is searched for
  709.   from anywhere within the subject line. Also, mbfilter saves files using
  710.   the reqsvr, which SOMETIMES would not work properly due to no permissions
  711.   to write the file. Now there is another option within a mbfilter entry,
  712.   '!', which will allow you to override any permissions restrictions. Use
  713.   with caution.
  714.  
  715. *    Added support in parsing of DOMAIN.TXT to the $INCLUDE directive
  716.  
  717. *    Added code to support the proposed Negotiation Extentions to AX25
  718.  
  719.   Though the proposed extensions are not even public, yet (proposal not yet
  720.   proposed ;-), the necessary code changes (few) have been made, to allow
  721.   testing and development.
  722.  
  723. *    Added a 'mbox enforce' command
  724.  
  725.   This if set (off by default) will not allow a user to enter a 'SB' to an
  726.   address that doesn't have a '@host'. For instance, 'SB tcpip@usa' is fine,
  727.   but 'SB tcpip' wouldn't be. 
  728.  
  729. *    Added a BBS uptime command
  730.  
  731. *    Added a TRACE button for TNOS/X
  732.  
  733. *    Added a Compiling Configuration program (mkconfig.tcl)
  734.  
  735.   This prompts for the features desired, and creates a config.h file. It is
  736.   based in style on the Linux Kernel configuration script, but this is done
  737.   as a TCL script, so it can be used on both MSDOS and Unix platforms.
  738.  
  739. *    Added a Autoexec.nos Configuration program (mksetup.tcl)
  740.  
  741.   This prompts for the information needed, and creates a autoexec.nos file.
  742.   This is also a TCL script, so it can be used on both MSDOS and Unix
  743.   platforms.
  744.  
  745. *    Added SQL support! (Sorry DOS users, Unix feature, only)
  746.  
  747.   This is written for use with the MSQL package, freely available. With the
  748.   sql.c file as a model, support could be added for commercial servers, too.
  749.   The 'sql host' should be set to the Unix machine name running msql. The
  750.   'sql database' name defaults to 'tnos'. From the Command Session (or from
  751.   the BBS as a SYSOP) all MSQL commands can be entered with the 'sql query'
  752.   command. In the BBS, non-SYSOPs are limited to the 'sql userquery' command.
  753.   This command can be set to only allow 'select' retrevals, IF the
  754.   'sql limitusers' command is set to 'on'.
  755.  
  756.   In addition, the TScript language has a new '~sql querystr' command.
  757.  
  758.   The current version of msql can be found on ftp.lantz.com in the /tnos/misc
  759.   directory, or the mirror site of ftp.mwmicro.com in /pub/linux/tnos/misc.
  760.  
  761.  
  762.  
  763. ------------------------------------------------------------
  764. Minor Changes:
  765.  
  766. The following minor changes have occurred.
  767.  
  768.  
  769. *    Removed # TUTORED from statusline, if TUTOR not compiled in
  770.  
  771. *    Allowed SYSOPS to use non-callsigns with STRICT_CALL enabled
  772.  
  773. *    Assorted socket cleanups, from Jnos 110L
  774.  
  775.   Barry K2MF provided code to make sure a failed smtp or finger connection
  776.   is cleaned up completely.  Previously, a socket could linger with a PCB
  777.   of 0000.
  778.  
  779. *    MS-DOS Multitask a little more stable
  780.  
  781.   From Jnos 110L: Andrew G8FSL enhanced the Multitask support by modifying
  782.   morecore() in alloc.c to not call sbrk() while multitasking, but rather
  783.   to fail a morecore() request.  This avoids problems when sbrk() gets
  784.   confused and loses what core we have left!  Also affected are the shell
  785.   and mail commands in pc.c.
  786.  
  787. *    Added some new messages MS-DOS error messages created since MSDOS 3.x.
  788.  
  789. *    Changed BBS to accept DEL as BS
  790.  
  791. *    New MS-DOS critical error handler from Jnos 110L
  792.  
  793.   Based on comments by Joe K5JB, Changed errhandler() in pc.c to handle
  794.   disk and device error messages better.
  795.  
  796. *    Changed the maximum line size for ftpusers entries from 128 to 1024
  797.  
  798. *    The setlong() function now accepts hexadecimal numeric strings
  799.  
  800.   Currently, this enhances the following commands: 'mem thresh' (DOS),
  801.   'ax25 blimit',
  802.   'ifconfig ifc ax25 blimit', 'ax25 maxwait', 'ifconfig ifc ax25 maxwait',
  803.   'ax25 irtt', 'ifconfig ifc ax25 irtt', 'ax25 t3', 'ifconfig ifc ax25 t3',
  804.   'ax25 t4', 'ifconfig ifc ax25 t4', 'conv t4', 'conv maxwait',
  805.   'domain maxwait', 'domain ttl', 'ftptdisc', 'ip rtimer', 'ip ttl',
  806.   'mbox tdisc', 'mbox maxtimer', 'netrom tdisc', 'netrom acktime',
  807.   'netrom choketime', 'netrom irtt', 'rip ttl', 'security tipperms',
  808.   'security ax25perms', 'security amprperms', 'security nonamprperms',
  809.   'ssaver' (DOS), 'tcp irtt', and 'tcp maxwait'.
  810.  
  811. *    The setint() function now accepts hexadecimal numeric strings
  812.  
  813.   Currently, this enhances the following commands: 'mem ibufs' (DOS),
  814.   'arp maxq', 'arp expire', 'ax25 hsize', 'ax25 filter', 'conv entrychannel',
  815.   'conv hmaxq', 'conv umaxq', 'domain cache size', 'domain cache wait',
  816.   'domain retry', 'domain maxclients', 'ftpmaxclients', 'ip hsize', 
  817.   'bulletin loophold', 'mbox maxusers', 'ppp ifc trace',
  818.   'smtp dtimeout', 'smtp t4', 'tcp retries', 'tcp blimit',
  819.   'asyconfig ifc rxqueue' (UNIX), 'asyconfig ifc txqueue' (UNIX), 
  820.  
  821. *    The setintrc() function now accepts hexadecimal numeric strings
  822.  
  823.   Currently, this enhances the following commands: 'lzw', and 'nntp quiet'
  824.  
  825. *    The setuns() function now accepts hexadecimal numeric strings
  826.  
  827.   Currently, this enhances the following commands: 'mem ibufsize' (DOS),
  828.   'mem minheap' (DOS), 'forward subchannel', 'mb tiptimeout', and
  829.   'asyconfig ifc bufsize' (UNIX).
  830.  
  831. *    The setshort() function now accepts hexadecimal numeric strings
  832.  
  833.   Currently, this enhances the following commands: 'ax25 version',
  834.   'ifconfig ifc ax25 version', 'ax25 retry', 'ifconfig ifc ax25 retry',
  835.   'ax25 maxframe', 'ifconfig ifc ax25 maxframe', 'ax25 paclen',
  836.   'ifconfig ifc ax25 paclen', 'ax25 pthresh', 'ifconfig ifc ax25 pthresh',
  837.   'ax25 window', 'ifconfig ifc ax25 window', ftp 'verbose', 'hop queries',
  838.   'hop maxttl', 'hop maxwait', 'pop trace', 'nntp trace', 'netrom ttl',
  839.   'netrom qlimit', 'netrom window', 'netrom retries', 'rip trace',
  840.   'rspf maxping', 'smtp maxclients, 'smtp trace', 'tcp mss', and 'tcp window'.
  841.  
  842. *    Added binary string entry for several routines
  843.  
  844.   This was added to setlong(), setint(), setintrc(), setuns(), and setshort(),
  845.   and enhances the same commands as listed previously for hex strings.
  846.   Also, the permissions string in the ftpusers file can be entered in
  847.   binary.
  848.  
  849.   NOTE: All binary constants MUST start with "%", just as all hexadecimal
  850.   constant must start with "0x"!
  851.  
  852. *    Increased the size of getline() buffers from 256 to 1024
  853.  
  854.   Hopefully this will eliminate the domain crashes that have been more
  855.   frequent with 'domain trans on'.
  856.  
  857. *    Removed conditional code for AMIGA and MAC in files.c
  858.  
  859.   This was OLD code left over from NET days, and has not been being maintained,
  860.   anyway.
  861.  
  862. *    Consolidated filename strings in files.c, removing conditionals
  863.  
  864.   Also did a lot of reformatting to the files.c file, while I was there.
  865.   This change and the one above reduced the size of the files.c file by
  866.   over one third.
  867.  
  868.   NOTE: I discoved a discrepency between DOS and UNIX on the name of the
  869.   'groups' file, which was 'group' in UNIX. Any UNIX users upgrading that
  870.   have an existing 'group' file must rename it to 'groups'. 
  871.  
  872. *    Changed the CONV indicator on the status line to a 3 digit field
  873.  
  874.   Not uncommon on the Internet Converse Network to have more than 99 users
  875.   online at once.
  876.  
  877. *    Made several changes to prepare for years > 1999
  878.  
  879.   Files affected: at.c, nntpserv.c, and unix.c.
  880.  
  881. *    Assorted reformating of several files
  882.  
  883. *    Changed several 'retry' subcommands to 'retries' for consistency
  884.  
  885.   This occurred in domain.c.
  886.  
  887. *    Added a warning in the hostname command if no domain portion given
  888.  
  889. *    Added in a BBS scripthook named 'msgend.sys'
  890.  
  891.   This gets called (if it exists) at the end of each message, when reading
  892.   messages. This was added to support the 'winpak' program. To make 'winpak'
  893.   users happy, the following in a 'spool/cmds/msgend.sys' file should do it:
  894.  
  895.     ~ ending message for winpak
  896.     ~p 1 0 7 20
  897.     --- end of message #~1 ---~n
  898.  
  899. *    Changed parameter to 'escape' from binary character to hex string
  900.  
  901. *    Assorted cleanup to nntpcli.c for warning-free compiling
  902.  
  903. *    Expanded command.hlp file......
  904.  
  905.   Bill <ve4li@ve4wam.ampr.org> has provided an expanded command.hlp file
  906.   which will be included in 2.02.
  907.  
  908. *    Made Unix's mallocw routine really wait
  909.  
  910.   If a memory allocation was requested and the memory was not available at
  911.   that time (swap reorganization, etc.) it was NOT waiting. Now, that process
  912.   within TNOS will wait up to 30 seconds for the memory, afterwards it will
  913.   do what it HAS done, and that is exit TNOS.
  914.  
  915. *    Quieted a few Unix compilation warnings
  916.  
  917. *    Changed idle polling frequency of BBS line input function
  918.  
  919.   If there is no input from a BBS user, the process now goes to sleep for
  920.   1/2 second. This value USED to be 1/10 second. Shouldn't be noticed at all
  921.   by the user, but should help keep down the CPU time on loaded systems.
  922.  
  923. *    Reverted the convers sockets to blocking mode
  924.  
  925.   I'm SURE there was a good reason that I made the convers sockets
  926.   non-blocking on receive, and had them use the non-blocking version of
  927.   recvline(), but I REALLY can't remember what it was. Until such time as it
  928.   is found to be necessary, these stream will again be blocking, which will
  929.   make each convers process use less CPU time.
  930.  
  931. *    Changed the default for 'smtp hopper' to off, if compiled in
  932.  
  933.  
  934.  
  935. ------------------------------------------------------------
  936. Known Bugs:
  937.  
  938. The following are known bugs that are being worked on during the development
  939. of release 2.02. These may or may not be fixed in release 2.02.
  940.  
  941.  
  942. *    Forward file locking needed
  943.  
  944.   If a record gets added into a *.fwd file when a forwarding session is
  945.   concluding, sometimes the new record gets missed, and the *.fwd file
  946.   gets deleted. Rare, but needs to be addressed.
  947.  
  948. *    Sending mail to the proxy server, doesn't seem to work properly
  949.  
  950. *    Displaying parameter strings with a '\r' needs adjustment
  951.  
  952.   If you define a parameter string (like 'ax25 bctext') to be multi-line
  953.   strings with a '\r', the output to the screen may not be what you expect.
  954.  
  955. *    FBB compression quirk
  956.  
  957.   There seems to AT TIMES be a buglet involving FBB compressed forwarding.
  958.   What happens is that a few random characters get incorrectly decoded and
  959.   added to the end of messages, at times. I am trying to figure out the reason
  960.   for this.
  961.  
  962. *    Duplicate entries in the WP files
  963.  
  964.   While not harmful, the WPages routines SHOULD be overwritting existing
  965.   entries, NOT creating new ones.
  966.  
  967. *    Problem with a CC: to a public area
  968.  
  969.   If you send a 'SP' BBS message (or 'SC') and end up with a CC: to a public
  970.   area it has an 'X-BBS-Type' line defining it as personal, when it should be
  971.   bulletin.
  972.  
  973. *    Seems to be a problem if mail queued for fwding is being held
  974.  
  975.   Only occurs after the system has tried MANY times to fwd it, but it
  976.   still remains held for review.
  977.  
  978. *    Occasionally output from one session goes to an incorrect socket
  979.  
  980.   Very rare. Trying to figure out where this one is coming from..........
  981.  
  982. *    There are Reports that resetting FTP sessions are causing crashes
  983.  
  984.   No other info, though, at this time.
  985.  
  986. *    Made a slight change to unixasy for z8530 support
  987.  
  988. *     None other at this time.... ;-)
  989.  
  990.  
  991.  
  992. ------------------------------------------------------------
  993. To-Do List:
  994.  
  995. The following are things on my 'to-do' list that may eventually
  996. be done, but not necessarily by the next release.
  997.  
  998.  
  999. *    Investigate incorporating into TNOS a userfs extension
  1000.  
  1001.   This would allow *any* Linux (and possibly other Unix) program to open a
  1002.   file and access certain TNOS features. For instance a terminal program like
  1003.   minicom could open a device:
  1004.  
  1005.     /tnos/connect/lan/k0zxf/ko4ks-1/813044
  1006.  
  1007.   and do the equivalent to 'connect lan k0zxf ko4ks-1 813044'.
  1008.  
  1009.   You could incorporate a copy of your current usage stats into a email
  1010.   message in Pine, by simply inserting a file named /tnos/stats/usage/general.
  1011.  
  1012. *    Add capability to allow use of OS commands
  1013.  
  1014.   Due to the obvious restriction of MS-DOS, this WILL be limited to Unix
  1015.   version only.
  1016.  
  1017. *    FTP permissions improved
  1018.  
  1019.   The new UNIX-like dir display needs a little more work with the permissions
  1020.   portion of the display...
  1021.  
  1022. *    Add better support for PBBS<->Internet mail address translation
  1023.  
  1024.   The 'translate' file and improved handling of aliases is a START, but more
  1025.   work needs to be done here. Maybe a 'translate.out' file...
  1026.  
  1027. *    Still better handling of AUTO/LOCAL ax25 routes
  1028.  
  1029.   Improvement by making an ax25 route entry part of the connection block,
  1030.   using this unique AUTO route for this connection only.
  1031.  
  1032. *    Support (optimization) for ncurses 1.9.x for performance
  1033.  
  1034. *    Color support output to Unix console
  1035.  
  1036.   The various color commands don't work with the Unix kernel and curses.
  1037.   Annoying, but just possible unexpected output. No crashes.
  1038.  
  1039. *    Consider altering import code to prevent holding imported messages
  1040.  
  1041.   Only bypass user permissions checking, not bad word check holding.
  1042.  
  1043. *    Consider providing a ROSE whitepages server
  1044.  
  1045. *    Consider adding a way to 'tip' remotely within the BBS
  1046.  
  1047. *    Consider providing separate SMTP/BBS rewrite files
  1048.  
  1049. *    Consider adding a MAN command
  1050.  
  1051.   Not much use till some man pages are made ;-), but the coding could be done
  1052.   in anticipation....
  1053.  
  1054. *    Consider adding a 'R x - x' syntax to the BBS read command
  1055.  
  1056. *    Consider adding Compressed Convers support 
  1057.  
  1058. *    Consider adding PASV support to FTP
  1059.  
  1060.